متغیرها در لینوکس محلهایی برای ذخیرهسازی اطلاعات هستند که در طول اجرای سیستم یا اسکریپتها از آنها استفاده میشود. این اطلاعات میتوانند شامل اعداد، رشتههای متنی، مسیرها و تنظیمات مختلف باشند. متغیرها به برنامهنویسان و کاربران کمک میکنند تا دادهها را به صورت دینامیک مدیریت کنند و کدهای قابل انعطافتری بنویسند.
در پوسته Bash (و اکثر شلهای لینوکس)، متغیرها با علامت =
تعریف میشوند. نکته مهم این است که قبل و بعد از علامت = نباید فاصله باشد.
برای نمایش محتوای یک متغیر، از echo به همراه علامت $
استفاده میشود. علامت $ به شل میگوید که مقدار متغیر را جایگزین کند.
دستور env (مخفف Environment) همه متغیرهای محیطی
(Environment Variables) را نمایش میدهد. این متغیرها شامل تنظیمات سیستم، مسیرها و
اطلاعات مربوط به کاربر فعلی هستند.
خروجی env معمولاً طولانی است و شامل متغیرهای زیادی میشود.
اگر فقط میخواهید یک متغیر خاص را ببینید، از echo $نام_متغیر استفاده کنید.
برای مثال: echo $PATH
روش تعریف متغیرها در شلهای مختلف (Bash، Zsh، Fish، Sh، ...) ممکن است کمی متفاوت باشد. اما رایجترین شل در لینوکس Bash است و تقریباً تمام دستورات در این جزوه برای Bash نوشته شدهاند.
| شل | روش تعریف | نکته |
|---|---|---|
| Bash | var="value" |
استاندارد لینوکس |
| Zsh | var="value" |
مشابه Bash |
| Fish | set var "value" |
روش متفاوت با set |
| Sh | var="value" |
مشابه Bash اما قدیمیتر |
در همه شلها برای استفاده از مقدار متغیر باید از علامت $ استفاده کرد،
ولی برای تعریف متغیر نیازی به $ نیست.
متغیرها در لینوکس به دو دسته اصلی تقسیم میشوند: سراسری (Global) و محلی (Local).
export ساخته میشوندPATH، HOME، USERenv قابل مشاهده هستندmyvar="hello"env قابل مشاهده نیستند
حالا اگر یک شل جدید باز کنیم (bash)، این متغیر در دسترس نیست:
حالا اگر یک شل جدید باز کنیم، این متغیر در دسترس است:
متغیر PS1 ظاهر خط فرمان (Prompt) را در ترمینال تعیین میکند.
با تغییر این متغیر میتوانید ظاهر خط فرمان را به سلیقه خود تغییر دهید.
\u = نام کاربر، \h = نام هاست، \w = مسیر جاری
متغیر SHLVL تعداد شلهای تو در تو (تعداد سطح شل) را نمایش میدهد.
هر بار که یک شل جدید باز میکنید یا از bash درون bash استفاده میکنید،
این عدد یک واحد افزایش مییابد.
در شل اصلی، مقدار SHLVL برابر 1 است.
با ورود به یک شل جدید، مقدار به 2 افزایش یافت.
متغیر PATH یکی از مهمترین متغیرهای محیطی است.
این متغیر شامل لیستی از مسیرها است که سیستم در آنها به دنبال
فایلهای اجرایی (Executable Files) میگردد.
وقتی دستوری مثل ls را اجرا میکنید، سیستم به ترتیب در این مسیرها
به دنبال فایل ls میگردد.
برای اضافه کردن یک مسیر جدید به PATH:
export PATH=$PATH:/مسیر/جدید
متغیر EDITOR ویرایشگر پیشفرض سیستم را مشخص میکند.
بسیاری از برنامهها (مانند git، crontab و ...) از این متغیر
برای انتخاب ویرایشگر متن استفاده میکنند.
اگر این متغیر تعریف نشده باشد، معمولاً vi یا nano به عنوان پیشفرض استفاده میشود.
| نام متغیر | توضیح | مثال مقدار |
|---|---|---|
PS1 |
ظاهر خط فرمان | \u@\h:\w\$ |
SHLVL |
سطح شل فعلی | 1 یا 2 یا 3 |
PATH |
مسیرهای جستجوی فایلهای اجرایی | /usr/bin:/bin:/usr/local/bin |
EDITOR |
ویرایشگر پیشفرض | /usr/bin/nano یا vim |
HOME |
دایرکتوری خانه کاربر | /home/user |
USER |
نام کاربر جاری | user |
PWD |
دایرکتوری جاری | /home/user/Documents |
SHELL |
شل پیشفرض کاربر | /bin/bash |
= تعریف میشوند و با $
مقدار آنها نمایش داده میشود.
env همه متغیرهای محیطی را نمایش میدهد.
export ساخته میشود و به شلهای فرزند ارث میرسد.
PS1 (ظاهر خط فرمان)،
SHLVL (سطح شل)،
PATH (مسیرهای اجرایی)،
EDITOR (ویرایشگر پیشفرض)
۱. با env همه متغیرهای محیطی را مشاهده کنید.
۲. یک متغیر محلی به نام my_name تعریف کنید و مقدار آن را با echo نمایش دهید.
۳. همان متغیر را با export به سراسری تبدیل کنید و یک شل جدید باز کنید و مقدار آن را بررسی کنید.
۴. ظاهر خط فرمان خود را با تغییر PS1 به [\u@\h] $ تغییر دهید.
۵. مسیر PATH خود را مشاهده کنید و یک مسیر دلخواه به آن اضافه کنید.